Apache Druid 是一块高性能的实时数仓平台,具有高可用HA、高扩展、分布式部署的特点,在数据加工方面能够一定程度地对维度数据进行预聚合,数据响应能够达到亚秒级。 由MetaMarket公司于2011年开发,Druid被定义为开源、分布式、面向列存储的实时分析数据存储系统。
-
要解决的"痛点"是:
- 1.在高并发环境下,保证海量数据查询分析性能
- 2.同时提供海量实时数据的查询、分析与可视化功能
-
Druid是面向海量数据的、用于实时查询与分析的OLAP存储系统。Druid的关键特性如下:
- 1.亚秒级的OLAP查询分析
- 采用了列式存储、倒排索引、位图索引等关键技术
- 2.在亚秒级别内完成海量数据的过滤、聚合以及多维分析等操作
- 3.实时流数据分析 传统分析型数据库采用的批量导入数据,进行分析的方式 Druid提供了实时流数据分析,以及高效实时写入
- 4.实时数据在亚秒级内的可视化
- 5.丰富的数据分析功能 Druid提供了友好的可视化界面
- 6.SQL查询语言 REST查询接口
- 7.高可用性与高可拓展性 Druid工作节点功能单一,不相互依赖 Druid集群在管理、容错、灾备、扩容都很容易
- 1.亚秒级的OLAP查询分析
-
不支持,如果不能接受可以直接弃用Druid
- 不支持精确去重
- 不支持 Join(只能进行 semi-join)
- 不支持根据主键的单条记录更新
注意:阿里巴巴也曾创建过一个开源项目叫 Druid (简称阿里 Druid),它是一个数据库连接池项目。阿里 Druid 和 我们要讨论的 Druid 没有任何关系,它们解决完全不同的问题
- Druid节点
- 节点种类
- Overload
- MiddleManager
- Coordinator
- Historical
- Broker
- 节点功能
- Overload和MiddleManager
- 主要负责处理索引任务
- Overlord是MiddleManager的master节点
- Coordinator和Historical
- 负责管理分发Segment
- Coordinator是Historical的master节点
- Broker
- 负责接收Client查询请求
- 拆分子查询给MiddleManager和Historical节点
- 合并查询结果返回给Client
- Overload和MiddleManager
- 节点种类
-
索引服务
-
负责数据的摄取
- 摄取方式包含:本地、HDFS、Kafka
-
负责数据销毁,还有segment(物理概念)的管理
-
主节点:Overload
-
从节点:middleManager
-
-
存储服务
- 负责数据的具体存储
- 数据按照时间进行存储,一个时间段称之为chunk(逻辑概念),一个chunk包含多个segment(物理概念)
- 一个segment包含三列数据:时间列、维度列、指标列
- 主节点:coordinator
- 从节点:historical
-
查询服务
- 供数据查询使用
当数据摄取的时候,Druid会根据维度列对指标的数据进行提前聚合,再插入到Druid的数据库里。位图索引会提高索引性能 数据结构 Map<Key,BitMap()>
- 启动Imply
cd /export/servers/imply-3.0.4/
bin/supervise -c conf/supervise/quickstart.conf > quickstart.log &
(后台启动)
bin/supervise -c /export/servers/imply-3.0.4/conf/supervise/quickstart.conf --daemonize
- 停止Imply
/export/servers/imply-3.0.4/bin/service --down
- 查看服务WebUI
组件名 URL
broker http://node01:8888
coordinator、overlord http://node01:8081/index.html
middleManager、historical http://node01:8090/console.html
-
清理CDH版Druid的bin目录下的
/var/druid/segments
和/var/druid/segement-cache
以及/var/druid/task
下的数据 -
清理mysql中的数据